package inicio;

import AccesoSistema.ModuloAccederSistema;
import Banco.ModuloBanco;
import Cuenta.ModuloCuenta;
import Dominio.Cuenta;
import Dominio.Movimiento;
import DominioWS.BancoWS;
import DominioWS.ClienteWS;
import DominioWS.CuentaWS;
import DominioWS.MovimientoWS;
import DominioWS.ParametroWS;
import DominioWS.UsuarioWS;
import Excepciones.ACMSoapExcepcion;
import Traductor.Traductor;

public class Inicio {

	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			accederSistema();
			listaBanco();
			listaCuentaCorrientePropias();
			obtenerInformacionCuenta();
			consultarCuentaMensual();
			consultarCuentaEntreFechas();
			//ingresarCuentaTercero();
			ingresarCuentaOtroBanco();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	public static void ingresarCuentaOtroBanco(){
		ModuloCuenta servicio = new ModuloCuenta();
		UsuarioWS usuario = new UsuarioWS();
		usuario.set_contrasena("PRUEBA2");
		usuario.set_numeroTarjeta("PRUEBA2");
		usuario.set_numeroTelefonico("987654321");
		
		ClienteWS cliente = new ClienteWS();
		cliente.set_nombre("PRUEBA8_NOMBRE");
		cliente.set_cedula("8888");
		cliente.set_correo("prueba5@po.com");
		
		CuentaWS cuenta = new CuentaWS();
		cuenta.set_alias("PRUEBA5_ALIAS");
		cuenta.set_numero("9898");
		cuenta.set_tipo("AHORRO");
		
		BancoWS banco = new BancoWS();
		banco.set_id(4);
		cuenta.set_banco(banco);
		
		cliente.set_cuenta(cuenta);
		
		ParametroWS parametro = new ParametroWS();
		parametro.set_usuario(usuario);
		parametro.set_nuevoCliente(cliente);
		
		try {
			servicio.ingresarNuevaCuentaOtroBancoWS(parametro);
		} catch (ACMSoapExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void ingresarCuentaTercero(){
		ModuloCuenta servicio = new ModuloCuenta();
		UsuarioWS usuario = new UsuarioWS();
		usuario.set_contrasena("PRUEBA2");
		usuario.set_numeroTarjeta("PRUEBA2");
		usuario.set_numeroTelefonico("987654321");
		
		ClienteWS cliente = new ClienteWS();
		cliente.set_nombre("PRUEBA5_NOMBRE");
		cliente.set_cedula("9898");
		cliente.set_correo("prueba5@po.com");
		
		CuentaWS cuenta = new CuentaWS();
		cuenta.set_alias("PRUEBA5_ALIAS");
		cuenta.set_numero("9898");
		cuenta.set_tipo("AHORRO");
		
		cliente.set_cuenta(cuenta);
		
		ParametroWS parametro = new ParametroWS();
		parametro.set_usuario(usuario);
		parametro.set_nuevoCliente(cliente);
		
		try {
			servicio.ingresarNuevaCuentaMismoBancoWS(parametro);
		} catch (ACMSoapExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void consultarCuentaEntreFechas(){
		ModuloCuenta servicio = new ModuloCuenta();
		UsuarioWS nuevoUsuario = new UsuarioWS();
		nuevoUsuario.set_contrasena("PRUEBA2");
		nuevoUsuario.set_numeroTarjeta("PRUEBA2");
		nuevoUsuario.set_numeroTelefonico("987654321");
		
		CuentaWS cuenta = new CuentaWS();
		cuenta.set_id(1);
		
		CuentaWS[] lista = new CuentaWS[1];
		lista[0] = cuenta;
		
		nuevoUsuario.set_listaCuenta(lista);
		
		ParametroWS parametro = new ParametroWS();
		parametro.set_usuario(nuevoUsuario);
		parametro.set_fechaDesde("01/01/2011 12:00");
		parametro.set_fechaHasta("01/05/2011 12:00");
		try {
			MovimientoWS[] resultado = 
				servicio.movimientoCuentaFechaWS(parametro);
			Movimiento[] listaFinal = Traductor.traductorListaMovimiento(resultado);
		} catch (ACMSoapExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	public static void consultarCuentaMensual(){
		ModuloCuenta servicio = new ModuloCuenta();
		UsuarioWS nuevoUsuario = new UsuarioWS();
		nuevoUsuario.set_contrasena("PRUEBA2");
		nuevoUsuario.set_numeroTarjeta("PRUEBA2");
		nuevoUsuario.set_numeroTelefonico("987654321");
		
		CuentaWS cuenta = new CuentaWS();
		cuenta.set_id(1);
		
		CuentaWS[] lista = new CuentaWS[1];
		lista[0] = cuenta;
		
		nuevoUsuario.set_listaCuenta(lista);
		
		ParametroWS parametro = new ParametroWS();
		parametro.set_usuario(nuevoUsuario);
		parametro.set_mes(5);
		try {
			MovimientoWS[] resultado = 
				servicio.movimientoCuentaMensualWS(parametro);
			Movimiento[] listaFinal = 
				Traductor.traductorListaMovimiento(resultado);
		} catch (ACMSoapExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	public static void obtenerInformacionCuenta(){
		ModuloCuenta servicio = new ModuloCuenta();
		try {
			CuentaWS cuenta = new CuentaWS();
			cuenta.set_id(1);
			CuentaWS resultado = servicio.informacioCuentaWS(cuenta);
			Cuenta resultadoFinal = Traductor.traductorCuenta(resultado);
		} catch (ACMSoapExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void listaCuentaCorrientePropias(){
		UsuarioWS nuevoUsuario = new UsuarioWS();
		nuevoUsuario.set_contrasena("PRUEBA2");
		nuevoUsuario.set_numeroTarjeta("PRUEBA2");
		nuevoUsuario.set_numeroTelefonico("987654321");
		
		ModuloCuenta servicioCuenta = new ModuloCuenta();
		CuentaWS[] resultado = null;
		try {
			resultado = servicioCuenta.obtenerCuentasPropiasWS(nuevoUsuario);
		} catch (ACMSoapExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Cuenta[] resuladoFinald = Traductor.traductorListaCuenta(resultado);
	}
	
	public static void listaBanco(){
		ModuloBanco servicio = new ModuloBanco();
		 try {
			BancoWS[] listaBanco = servicio.obtenerListaBanco();
		} catch (ACMSoapExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void accederSistema(){
		UsuarioWS nuevoUsuario = new UsuarioWS();
		ModuloAccederSistema servicio1 = new ModuloAccederSistema();
		nuevoUsuario.set_contrasena("PRUEBA1");
		nuevoUsuario.set_numeroTarjeta("PRUEBA1");
		
		try {
			UsuarioWS resultadoUsuario =  
				servicio1.accesoAlSiatema(nuevoUsuario);
		} catch (ACMSoapExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}